Reading and writing compressed data using long-term storage

ABSTRACT

A storage system receives one or more records from a host system. The records are compressed in a first compression format that is native to the host system. The storage system identifies an incompatibility between the first compression format and a first operation of the storage system. In response to the identified incompatibility, the storage system decompresses the received records. The decompression is based on the first compression format. The storage system compresses the decompressed records in a second compression format. The storage system stores the secondarily compressed records onto a storage medium.

BACKGROUND

The present disclosure relates to long-term storage, and morespecifically, to utilizing multiple compression algorithms in long-termstorage devices.

Long-term storage may enable computer systems to store large amounts ofdata safely and cost effectively. Commercial industries may utilizelong-term storage to retain larger amounts of data that enhanceprofitability. Healthcare industries may utilize long-term storage tocapture and store a more comprehensive amount of patient-related data.Governments may utilize long-term storage to store more detailed recordsabout their citizens. Private individuals may utilize long-term storageto backup pictures and videos to prevent against loss of data.

SUMMARY

Embodiments of the present disclosure include a method, system, andcomputer program product for storing data on a storage medium. A storagesystem receives one or more records from a host system. The records arecompressed in a first compression format that is native to the hostsystem. The storage system identifies an incompatibility between thefirst compression format and a first operation of the storage system. Inresponse to the identified incompatibility, the storage systemdecompresses the received records. The decompression is based on thefirst compression format. The storage system compresses the decompressedrecords in a second compression format. The storage system stores thesecondarily compressed records onto the storage medium.

The above summary is not intended to describe each illustratedembodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 depicts a computing environment for long-term storage of recordsby a host aware long-term storage system in accordance with embodimentsof the present disclosure.

FIG. 2 depicts an example method for storing compressed files inaccordance with embodiments of the present disclosure.

FIG. 3 depicts an example method for searching for records in accordancewith embodiments of the present disclosure.

FIG. 4 depicts the representative major components of an examplecomputer system 401 that may be used, in accordance with embodiments ofthe present disclosure.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to long-term storage devices,more particular aspects relate to utilizing multiple compressionalgorithms in long-term storage devices. While the present disclosure isnot necessarily limited to such applications, various aspects of thedisclosure may be appreciated through a discussion of various examplesusing this context.

While utilized to perform a variety of tasks, computer systems(computers) may be required to provide ever increasing capabilities.These computers may utilize one or more algorithms to increaseperformance and capability. These computers may be similar to theexample computer depicted in FIG. 4 of the present disclosure.

One such algorithm may be a compression algorithm that provides acomputer with increased storage capacity and efficiency. The compressionalgorithm may compress and decompress one or more files on the computeras needed. The compression algorithm may be optimized for thecapabilities of the computer such as the available processor and memory.The selection of a compression algorithm may also take into accountcapabilities of software (e.g., operating systems or applications)running on the computer, such as the ability of the software to readfiles while in a compressed state. The selection of a compressionalgorithm may also take into account the present state of the computer,such as the tasks being performed or the activity of a user of thecomputer.

Another such algorithm may be an encryption algorithm that providesincreased security and privacy for a computer. The encryption algorithmmay encrypt or decrypt one or more files on the computer. The encryptionalgorithm may operate based on the hardware of the computer such as theavailable processor and memory. The encryption algorithm may beoptimized for the hardware and may operate based on other softwarerunning on the computer. Selection of the encryption algorithm to beused may take into account factors such as the requisite level ofsecurity or the tolerable level of latency to for encryption.

Long-term storage systems (LSS) may provide the computer with additionalstorage of records from the computer. The records may include the files,folders, or application states of software of the computer. The LSS mayenable a computer system to store data for long periods of time. The LSSmay enable the stored data to be transported offsite to deal with severeweather scenarios (e.g., storms, earthquakes, etc.). The LSS may alsoprovide data resiliency as one or more files are redundantly stored onboth storage of the computer system and also the LSS. The LSS mayprovide a computer with the ability to pause a first softwareapplication into an application state and store the application state.The stored application state may allow the computer to reallocate itsresources to a second software application and later resume operation ofthe first software application.

The LSS may utilize a storage compression algorithm to enable the LSS tostore additional files. The storage compression algorithm may bedesigned to operate at an increased efficiency in comparison to thecompression algorithm performed by the computer. The increasedefficiency may be of the compression ratio of the compression algorithmor another capability (e.g., readability of records while in acompressed state, search speed of compressed records, data integrity ofcompressed records, etc.). The LSS may include a variety of components,such as hardware, software, or firmware. The components may becustomized for increased performance while working with the storagecompression algorithm.

Likewise the LSS may also utilize a storage encryption algorithm toenable the LSS to secure the stored files. The storage encryptionalgorithm may be designed to operate at an increased efficiency incomparison to the encryption algorithm of the computer. The increasedefficiency may regard the level of security, the length of time recordsare likely to be stored, the media of storage, etc. The components ofthe LSS may also be customized for increased performance while workingwith the storage encryption algorithm.

A host aware long-term storage system (HALS) may translate betweenhost-based compression algorithms (HC) and storage-based compressionalgorithms (SC) while storing records for one or more hosts. The HALSmay also translate between host-based encryption algorithms (HE) andstorage-based encryption algorithms (SE). The hosts may be one or morecomputers or computing like systems that may require long-term storage,such as tablets, smartphones, cloud-computing environments, etc. TheHALS may enable hosts to use HC and HE on records while also storingthese records with SC and SE. The HALS may provide enhanced performancefor interfacing with long-term storage even when a host is using HC andHE.

FIG. 1 depicts a computing environment 100 for long-term storage ofrecords by a HALS in accordance with embodiments of the presentdisclosure. The computing environment 100 may include the following: aplurality of host computing systems 110A, 110B, 110C, 110D, and 110E(collectively, 110); a network 120 for communicatively coupling thecomponents of the computing environment; one or more storage media 130A,130B, and 130C (collectively, 130) for storing records; and a storagedevice 140 for interfacing with the storage media 130.

The hosts 110 may be computer systems, such as laptops, smartphones, andtablets. Each of the hosts 110 may be a general purpose computercomprised of hardware. An example computer may be depicted in FIG. 4.Each host 110 may execute an operating system or hypervisor that directsoperation of the hardware. The operating system may execute, inconjunction with the hardware, one or more software programs and maycreate or manipulate files and folders. The execution software programsmay be paused into a software state. The software states, files, andfolders may be collectively referred to as records. In some embodiments,the hosts 110 may be nodes of a single physical computer.

The hosts 110 may try to optimize storage space of one or more secondarystorage devices (e.g., hard drives, solid state drives, etc.) containedwith the hosts. In some embodiments, the hosts 110 may try to optimizestorage space of one or more primary storage devices (e.g., cache orram) of the hosts. The effectiveness of this optimization may be dependon a compression algorithm (HC) used. The HC may be executed by a givenhost 110 through a processing component of the host. The HC may beselected to provide a high level of performance to the host 110 duringexecution of the operating system and other software applications. TheHC may compress a specific file or set of files, such as in image oraudio compression. The HC may compress a large subset of records, suchas in a real-time file compression of a file-system. In embodimentswhere the compression is directed towards primary storage, the HC may bedirected towards only the working set of records that are actively inmemory. The HC may be selected or optimized for the particular softwareor hardware of the hosts 110.

The hosts 110 may also try to secure one or more records fromunauthorized access. To prevent unauthorized access, the hosts mayperform a particular encryption algorithm (HE). The HE may be executedby a processing component of a given host 110. The HE may be performedon a subset of records, such as when one or more files that are of aproprietary nature are secured. The HE may be selected based a number offactors, including, for example, based on whether a given host 110 isaccessible to a wide-area network such as the Internet (e.g., a verycomputationally intensive algorithm may be required). The HE may beselected or optimized for the particular software or hardware of thehosts 110.

The network 120 may be a wired network utilizing one or more wirelessstandards (e.g., Ethernet). The network 120 may also be a wirelessnetwork. The network 120 may connect the hosts 110 to each other. Thenetwork 120 may also connect to an external network (e.g., theInternet). The network 120 may also be a serial or parallel network or anetwork specifically designed to connect hosts 110 to a storage device140 (e.g., a storage area network). Each of the storage media 130 maystore records from one or more hosts 110. The storage media 130 may bedisks such as rotational magnetic media discs (hard disks). The storagemedia 130 may also be any other type of storage, such as flash memory, asolid state drive, or magnetic tape.

The storage device 140 may be a computing device designed to facilitatetertiary storage or long-term storage of records of the hosts 110 withinthe storage media 130. The storage device 140 may include the followingcomponents: a network port 142; a storage interface 144; a processor146, a memory 148; and a translator 150. The network port 142 maycommunicate with the network 120 to provide the hosts 110 with access tothe storage device 140. The network 120 and the network port 142 maycommunicate using one or more known communication protocols. Forexample, the network 120 may be a packet-based network and the port 142may communicate using a file-based access protocol. In some embodiments,the network 120 may use a block-based access protocol to communicatewith the network port 142. The storage interface 144 may communicatewith the storage media 130. The storage interface 144 maycommunicatively couple the other components of the storage device 140 tothe storage media 130. The storage interface 144 may also provideenhanced performance or redundancy through communication with thestorage media 130. For example, the storage media 130A, 130B, and 130Cmay be divided into a single logical partition (e.g., a redundant arrayof independent disks). Continuing the example, the storage interface 144may communicate using a protocol to take advantage of the partitioningof the storage media 130. In some embodiments, the storage interface144, may physically manipulate the storage media 130 as well as otherstorage media (not depicted) and may selectively couple with one or morestorage media. For example, the storage interface 144 may be a carouselor a robotic arm or both, and the storage interface may permit thestorage device 140 to engage and disengage with various media asrequested by a given host 110.

The processor 146 may utilize the memory 148, and may direct the othercomponents of the storage device 140. The processor 146 and the memory148 may be firmware and may run various software operations embodiedthereon. The processor 146 may receive updates from a host 110 or otherentity (not depicted), such as an administrative user or hypervisor. Theupdates may provide the storage device 140 with bug-fixes or increasedfunctionality. The processor 146 may receive one or more requests fromthe hosts 110 and may instruct the storage device 140 based on therequests. The requests may include write operations, read operations,search operations, delete operations, etc. The memory 148 may betemporary memory, e.g., random access memory, or may be non-volatile,such as flash-memory or a disk drive—or a combination of temporary andnon-volatile memory.

The translator 150 may convert data from the hosts 110 to a compressedform for the storage media 130. The translator 150 may be one or morecircuits that are designed to perform specific operations withhigh-levels of efficiency (e.g., an application specific integratedcircuit). The translator 150 may be one or more circuits configured toperform a series of storage-specific compression and decompressionalgorithms (SC). The translator 150 may also be configured to perform aseries of storage-specific encryption and decryption algorithms (SE).The translator 150 may include hardware-embodied operators including: astorage compressor 152, a storage decompressor 154, a storage encryptor156, and a storage decyptor 158. These operators may enable receiveddata to be quickly compressed and decompressed as well as encrypted anddecrypted in response to instructions from the processor 146. Theoperators may be hard-coded into the translator 150 to increaseperformance (e.g., compression ratio, speed, encryption level, latency,reliability, etc.).

In some embodiments, the translator 150 may also be configured toperform a series of host-specific compression and decompressionalgorithms (HC). The HCs may be carried out by additional components—ahost decompressor 162 and a host compressor 164. Additionally, thetranslator 150 may also be configured to perform a series ofhost-specific encryption and decryption algorithms (HE). The HEs may becarried out by additional components—a host decryptor 166 and hostencryptor 168.

The host-specific algorithms may be hard-coded HCs and HEs embodiedsimilarly to the other operators (e.g., the storage compressor 154). Thehard-coded algorithms may provide the storage device 140 to operate withincreased performance while manipulating records from hosts 110 that areencrypted or compressed using those algorithms. If a given host 110 usesan algorithm other than a hard-coded algorithm, compression ordecompression may be routed to the processor 146. A significantperformance degradation may occur if the processor 146 performs an HC orHE. In some embodiments, the additional components 162, 164, 166, and168 may be configured to perform a variety of HCs and HEs. Thisconfiguration may be because the circuitry of the additional componentsmay include various components that allow higher performance of thevarious HCs and HEs (e.g., increased parallelization, larger amounts ofcache, hard-coded sub-operations common to a wide variety HCs and HEs,branch prediction, etc.). This configuration may be through acustomizable set of circuitry that allows efficient performance of oneor more algorithms (e.g., a field-programmable gate array).

In a first example usage scenario, the port 142 of the storage device140 receives a batch of first records from host 110A through the network120. The first records are encrypted with an HE specific to host 110A.The storage device 140 also receives a store-command from host 110A. Theprocessor 146, in response to the store-command, scans the first recordsand identifies that the first records are encrypted with the HE specificto host 110A. The processor 146 records into memory 148 acompression/encryption preference. The compression/encryption preferenceindicates that host 110A sent records utilizing the HE specific to host110A.

Continuing the first example usage scenario, the processor 146 directsthe first records to the translator 150 (per operation 172) andinstructs the host decryptor 166 to decrypt the HE specific to host110A. The host decryptor 166 decrypts the first records and notifies theprocessor 146 of decryption. The processor 146 instructs, based on thenotification, the storage compressor 152 to compress the first recordsutilizing an SC. After compression by the storage compressor 154 theprocessor 146 instructs the storage encryptor 156 to encrypt the firstrecords utilizing an SE. After encryption by the storage encryptor 156the processor directs the records to the storage interface 144 (peroperation 174) along with a storage-address for the records. The storageinterface 144 selects one of the storage media 130, based on thestorage-address, and writes the records to the storage media.

In a second example usage scenario the storage device 140 receives asecond record request from host 110C through the network 120. The secondrecord request indicates a particular set of second records are desiredby the host 110C. The second record request includes a second searchstring related to a character string of records that should be locatedon one of the storage media 130. The processor 146 stores the secondsearch string in to the memory 148. The processor 146 also retrieves acompression/encryption preference from the memory 148 that indicatesrecords from host 110C should be provided to host 110C compressedutilizing an HC. The processor 146 instructs the storage interface 144(per operation 176), to retrieve records from the storage media 130 anddirect them to the storage decompressor 154.

Upon receipt of compressed records from the storage interface 144, thestorage decompressor 154 decompresses and provides the uncompressedrecords to the processor 146. The processor 146 compares the recordsfrom the storage decompressor 154 to the second search string receivedfrom the host 110C. If no matching records are found, the processor 146repeats the instruction to the storage interface 144 (per operation 176)and waits for more records from the storage decompressor 154. Ifmatching records are found, the processor 146 instructs the hostcompressor 164 to compress the matching records with the HC. Uponcompression by the host compressor 164 the processor 146 directs thematching records (per operation 178) to the host 110C through the port142.

FIG. 2 depicts an example method 200 for storing compressed files inaccordance with embodiments of the present disclosure. Method 200 may beperformed by a HALS during operation in a computing environment. TheHALS may be designed to interface with a plurality of hosts. The HALSmay store and retrieve host data (in the form of records) to and fromone or more storage media. The HALS may be equipped with one or morespecialized circuits configured to perform the operations of method 200.The operations of method 200 may be performed in the order depicted, butmay also be performed in another order. It should be appreciated thatadditional operations other than those depicted in method 200 may alsobe performed. Further, some operations of method 200 may be performed bythe HALS alone or in combination with other hardware, software, orfirmware. Method 200 may be a subset of a larger method that includeslistening for requests from a host.

Method 200 may begin by receiving a request to write one or more records(per operation 210). The write request may include a command such as astore command. The write request received (per 210) may also include oneor more records to be written. The write request and the records may bein an expected format understood by the HALS (e.g., a bit-stream,block-based data, packet-based data, etc.). The write request (per 210)may come from a host, such as a computer system communicatively coupledto the HALS through a network (e.g., wired or wireless) or bus (e.g.,parallel or serial). The received records may be in a compressed state.The compressed state may from a host-specific compression algorithm (HC)applied by the host or another entity (e.g., a file the host received inthe compressed state from the Internet).

It may be determined (per operation 220) if the HC is compatible withone or more operations of the HALS. The incompatibility may include atotal-incompatibility, such as the inability of the HALS to view orindex records based on the HC.

For example, a host may wish to perform a string search for a characterstring on a set of records (recordset). The host must first request andreceive the entire recordset from the HALS, then write that recordset toa storage of the host, then begin the search procedure from the storageof the host. A host that wishes to retrieve records from the HALS andperform a search for a character string may instead utilize the HALS.The HALS may retrieve the search string from the host and may retrieverecords one-by-one and utilize SC/SE to quickly decompress/decrypt arecord and search for the string without first retrieving the entiredataset. If the recordset is compressed with an HC, however, the stringsstored in the recordset may no longer be unique. The HC may utilizepattern matching (or another compression technique) to substitute astring or set of strings with another string. This substitution mayeliminate or duplicate a string to be searched, preventing a stringsearch from occurring.

The incompatibility may include a partial-incompatibility, such as aperformance degradation due to the HC. For example, there are manycompression algorithms that a host may select and use as an HC. The HALSmay not have dedicated circuits to perform the selected HC, and may needto perform compression/decompression with a general processor of theHALS. The compression/decompression of an HC by a general processor mayresult in a slower experience.

If the HC is incompatible (per 220), the HALS may decompress thereceived records (per operation 225). The decompression (per 225) may beperformed by a general purpose processor of the HALS. In someembodiments, the decompression (per 225) may be performed by one or morespecialized circuits of the HALs.

If the HC is compatible (per 220) (alternatively, if the receivedrecords were decompressed per 225), the HALS may determine if thereceived records should be compressed prior to storage (per operation230). The compression prior to storage may be a storage-specificcompression algorithm (SC) applied by the HALS or one of its components.The SC may provide one or more benefits, such as high compression ratiosor expedient decompression. If received records should be compressed(per 230), the HALS may compress the received records (per operation235). If the HALS decides not to compress the received records (per 230)(alternatively, if the received records were compressed per 235), theHALs may determine if the received records should be encrypted prior tostorage (per operation 240). The encryption prior to storage may be astorage-specific encryption algorithm (SE) applied by the HALS or anassociated component. The SE may provide one or more benefits, such asenhanced security or reduced bit rot. If received records should beencrypted (per 240), the HALS may encrypt the received records (peroperation 245).

Per operation 250 and if HALS decides not to encrypt the receivedrecords (per 240) (alternatively, if the received records are encryptedper 245), any compression (per 235) and/or encryption (per 245) may beverified. The compression/encryption verification (per 250) may beperformed before any writing of records to a media, to prevent data lossor corruption. The HALS may verify compression (per 250) by utilizingthe SC to decompress a subset of the received records that werecompressed (per 235). The HALS may further verify compression (per 250)by comparing the decompressed subset to the records received (per 210).If the received records were decompressed (per 225), the HALS mayfurther verify compression (per 250) by comparing the decompressedsubset to the decompressed records. The HALS may verify encryption (per250) by utilizing the SE to decrypt a subset of the received recordsthat were encrypted (per 245). The HALS may further verify encryption(per 250) by comparing the decrypted subset to the records received (per210). If the received records were decompressed (per 225), the HALS mayfurther verify the encryption (per 250) by comparing the decryptedsubset to the decompressed records.

If the verification (per 250) is successful (per operation 260), theHALS may write the received records to a media (per operation 270), suchas one or more magnetic tape cassettes. The HALS may also record alongwith the write to media (per 270) one or more attributes regarding thewritten record to a memory component. The attributes may include thefollowing: information regarding the write status; the particularcassette or cassettes used; whether HC, SC, or SE was utilized, andpreferences a host may have regarding the written records. After writingthe records to the medium (per 270), method 200 may end and the HALS maycontinue listening for requests. In some embodiments, after writingrecords to the medium (per 270) the HALS may notify the host of asuccessful operation.

If the verification (per 250) is unsuccessful (per 260), the HALS mayprovide an error (per operation 265). The error (per 265) may beprovided to the host that sent the write request. The error (per 265)may be provided to an administrator (e.g., a user or administrativesystem) of the HALS. The error (per 265) may include the received recordor an identifier thereof. The error (per 265) may prevent the HALS fromwriting records to a media that are incorrectlycompressed/encrypted/read from the host. The method 200 may end afterproviding the error (per 265), and the HALS may continue listening forrequests. In some embodiments, the HALS may enter a paused state afterproviding the error (per 265), where no further requests may beacknowledged or may only be acknowledged by returning an error state.

FIG. 3 depicts an example method 300 for searching for records inaccordance with embodiments of the present disclosure. Method 300 may beperformed by a HALS during operation in a computing environment. TheHALS may be designed to interface with a plurality of hosts. The HALSmay store and retrieve host data (in the form of records) to and fromone or more storage media. The HALS may be equipped with one or morespecialized circuits configured to perform the operations of method 300.The operations of method 300 may be performed in the order depicted, butmay also be performed in another order. It should be appreciated thatadditional operations other than those depicted in method 300 may alsobe performed. Further, some operations of method 300 may be performed bythe HALS alone or in combination with other hardware, software, orfirmware. Method 300 may be a subset of a larger method that includeslistening for requests from a host.

Method 300 may begin by receiving a request to search for one or morerecords (per operation 310) stored upon a media communicatively coupledto the HALS. The search request may include a search value (e.g., astring of characters, a specific number, a particular image, etc.). Thesearch request may also include a search identifier (e.g., a uniquetoken related only to the search value). The search request may comefrom a host, such as a computer system communicatively coupled to theHALS through a network or bus. The HALS may have performed operationsfor the host before receiving the search request and may have saved oneor more attributes to memory regarding the prior operations.

Per operation 320, the HALS may read a media for the records requested(per 310). The HALS may read the media (per 320) by issuing commands tointerface with the media, such as to mechanically select a given mediafrom a plurality (e.g., utilizing a carousel or magazine holding aplurality of tapes and physically engaging the tapes). The HALS mayfurther read the media (per 320) by communicatively scanning through themedia after mechanical selection to read the data stored thereon. TheHALS may utilize the search value to read the media (per 320). The HALSmay utilize the saved attributes to read the media (per 320).

Records that have been retrieved by the read media operation (per 320)may be have been encrypted (e.g., using an SE or HE). The HALS maydetermine (per operation 330) that the retrieved records may beencrypted. The HALS may determine (per 330) that a given retrievedrecord is encrypted by utilizing the saved attributes. The HALS maydetermine (per 330) that a given retrieved records is encrypted byscanning the given retrieved record (e.g., by identifying a bit-patternof the record indicative of an SE). If a record is determined encrypted(per 330), the HALs may decrypt the retrieved records (per 335). TheHALS may decrypt the retrieved records (per 355) by utilizing anapplication specific integrated circuit (circuit). The circuit may havean algorithm embodied therein such as an SE that may enable efficientencryption and decryption.

Records that have been retrieved by the read media operation (per 320)may have been compressed (e.g., using an SC or HC). After determining agiven retrieved record is not encrypted (per 330) (alternatively, afterdecrypting a given retrieved record per 335), the HALS may determinethat the retrieved record may be compressed (per operation 340). TheHALS may determine (per 340) that a given retrieved record is compressedby utilizing the saved attributes. The HALS may determine (per 340) thata given retrieved records is compressed by scanning the given retrievedrecord (e.g., by identifying a bit-pattern of the record indicative ofan SC). If a record is determined compressed (per 340), the HALs maydecompress the retrieved records (per 345). The HALS may decompress theretrieved records (per 345) by utilizing the circuit.

After determining a given retrieved record is not compressed (per 340)(alternatively, after decompressing a given retrieved record per 345),the HALS may determine if a given retrieved record is a match (peroperation 350). The HALS may determine (per 350) a match by comparingthe retrieved record search value provided by the host. If the record isnot a match (per 350), the HALS may determine if there are more recordsto search (per operation 355). If there are more records (per 355), theHALS may again read the media (per 320) for additional records.

If the record is a match (per 350), the HALS may determine if the hostthat requested the search prefers that the matched records arecompressed (per operation 360). The HALS may determine that the hostprefers compression (per 360) based on the saved attributes. In someembodiments, the search request received (per 310) may include apreference regarding compression. The HALS may use the preferenceindicated in the search request to determine that the host preferscompression (per 360). The HALS may determine that the host preferscompression (per 360) based on a previous request that the host providedto the HALS. The HALS may determine that the host prefers compression(per 36) based on previous requests from other hosts that are of asimilar configuration or that perform a similar task to the host. If itis determined that the HALS prefers compression (per 360), the HALS maycompress the matched records (per 365) using the circuit. The HALS maycompress the matched records (per 365) using an HC native to the host.

Per operation 370, the HALS may respond to the request if there are nomore records to be read from the media (per 355) (alternatively, if thehost does not prefer compression per 360) (alternatively still, afterthe matched records are compressed). The response (per 370) may includethe names and locations of the media that were searched (e.g., “Tapemedia located in lower carousel searched.”). The response (per 370) mayinclude the records themselves in the requested format. The response mayinclude a statement as to the lack of a match to the search request (per350) if there were no more records to read (per 355) (e.g., “No recordsmatching search value were found, please verify search value and tryagain.”). After the request response has been provided (per 370) method300 may end.

FIG. 4 depicts the representative major components of an examplecomputer system 401 that may be used, in accordance with embodiments ofthe present disclosure. It is appreciated that individual components mayvary in complexity, number, type, and\or configuration. The particularexamples disclosed are for example purposes only and are not necessarilythe only such variations. The computer system 401 may comprise aprocessor 410, memory 420, an input/output interface (herein I/O or I/Ointerface) 430, and a main bus 440. The main bus 440 may providecommunication pathways for the other components of the computer system401. In some embodiments, the main bus 440 may connect to othercomponents such as a specialized digital signal processor (notdepicted).

The processor 410 of the computer system 401 may be comprised of one ormore cores 412A, 412B, 412C, 412D (collectively 412). The processor 410may additionally include one or more memory buffers or caches (notdepicted) that provide temporary storage of instructions and data forthe cores 412. The cores 412 may perform instructions on input providedfrom the caches or from the memory 420 and output the result to cachesor the memory. The cores 412 may be comprised of one or more circuitsconfigured to perform one or methods consistent with embodiments of thepresent disclosure. In some embodiments, the computer system 401 maycontain multiple processors 410. In some embodiments, the computersystem 401 may be a single processor 410 with a singular core 412.

The memory 420 of the computer system 401 may include a memorycontroller 422. In some embodiments, the memory 420 may comprise arandom-access semiconductor memory, storage device, or storage medium(either volatile or non-volatile) for storing data and programs. In someembodiments, the memory may be in the form of modules (e.g., dualin-line memory modules). The memory controller 422 may communicate withthe processor 410, facilitating storage and retrieval of information inthe memory 420. The memory controller 422 may communicate with the I/Ointerface 430, facilitating storage and retrieval of input or output inthe memory 420.

The I/O interface 430 may comprise an I/O bus 450, a terminal interface452, a storage interface 454, an I/O device interface 456, and a networkinterface 458. The I/O interface 430 may connect the main bus 440 to theI/O bus 450. The I/O interface 430 may direct instructions and data fromthe processor 410 and memory 420 to the various interfaces of the I/Obus 450. The I/O interface 430 may also direct instructions and datafrom the various interfaces of the I/O bus 450 to the processor 410 andmemory 420. The various interfaces may include the terminal interface452, the storage interface 454, the I/O device interface 456, and thenetwork interface 458. In some embodiments, the various interfaces mayinclude a subset of the aforementioned interfaces (e.g., an embeddedcomputer system in an industrial application may not include theterminal interface 452 and the storage interface 454).

Logic modules throughout the computer system 401—including but notlimited to the memory 420, the processor 410, and the I/O interface430—may communicate failures and changes to one or more components to ahypervisor or operating system (not depicted). The hypervisor or theoperating system may allocate the various resources available in thecomputer system 401 and track the location of data in memory 420 and ofprocesses assigned to various cores 412. In embodiments that combine orrearrange elements, aspects and capabilities of the logic modules may becombined or redistributed. These variations would be apparent to oneskilled in the art.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method of storing data on a storage medium, themethod comprising: receiving, by a storage system, one or more recordsfrom a host system, the records compressed in a first compression formatnative to the host system; identifying, by the storage system, anincompatibility between the first compression format and a firstoperation of the storage system; decompressing, by the storage system,based on the first compression format, and in response to the identifiedincompatibility, the received records; compressing, by the storagesystem and in a second compression format, the decompressed records; andstoring, by the storage system, the secondarily compressed records ontothe storage medium.
 2. The method of claim 1 further comprising:receiving, by the storage system, a request for the secondarilycompressed records; retrieving, by the storage system, the secondarilycompressed records from the storage medium; decompressing, by thestorage system and based on the second compression format, thesecondarily compressed records; and providing, by the storage system,the requested records.
 3. The method of claim 2, wherein the requestedrecords are re-compressed in the first compression format.
 4. The methodof claim 1, wherein the storage system is a tape drive, and wherein thestorage medium is a tape medium.
 5. The method of claim 1, wherein thefirst operation is a search operation, and wherein the method furthercomprises: receiving, by the storage system, a search string from thehost; retrieving, by the storage system, a subset of the secondarilycompressed records from the storage medium; decompressing, by thestorage system, the subset; and searching, based on the search string,the decompressed subset.
 6. The method of claim 1 further comprising:encrypting, by the storage system and before the storing, thesecondarily compressed records.
 7. The method of claim 6 furthercomprising: receiving, by the storage system, a request for theencrypted secondarily compressed records; retrieving, by the storagesystem, the encrypted secondarily compressed records from the storagemedium; decrypting, by the storage system, the encrypted secondarilycompressed records; decompressing, by the storage system and based onthe second compression format, the decrypted secondarily compressedrecords; and providing, by the storage system, the requested records. 8.The method of claim 1, wherein the received records are encrypted usinga first encryption format native to the host system, and wherein themethod further comprises: decrypting, by the storage system and based onthe first encryption format, the received records.
 9. The method ofclaim 1 further comprising: selecting, by the storage system, a subsetof the secondarily compressed records; decompressing, by the storagesystem, the selected subset; and verifying, by the storage system andbased on the decompressed subset and based on the received records, thecompressing based on the second compression format.
 10. The method ofclaim 9, wherein the verifying is performed before the storing.
 11. Themethod of claim 1, wherein the identified incompatibility is a firstcompression format that eliminates the uniqueness of character strings,and wherein the first operation is a search based on character strings.12. A storage system for storing data on a storage medium, the systemcomprising: a memory; and a processor in communication with the memory,wherein the processor is configured to perform a method comprising:receiving one or more records from a host system, the records compressedin a first compression format native to the host system; identifying anincompatibility between the first compression format and a firstoperation of the storage system; decompressing, based on the firstcompression format, and in response to the identified incompatibility,the received records; compressing, in a second compression format, thedecompressed records; and storing the secondarily compressed recordsonto the storage medium.
 13. The system of claim 12, wherein the methodfurther comprises: receiving a request for the secondarily compressedrecords; retrieving the secondarily compressed records from the storagemedium; decompressing, based on the second compression format, thesecondarily compressed records; and providing the requested records. 14.The system of claim 13, wherein the requested records are re-compressedin the first compression format.
 15. The system of claim 12, wherein thefirst operation is a search operation.
 16. A computer program productcomprising a computer readable storage medium having programinstructions embodied therewith, the program instructions executable bya computer to cause the computer to perform a method comprising:receiving, by a storage system, one or more records from a host system,the records compressed in a first compression format native to the hostsystem; identifying, by the storage system, an incompatibility betweenthe first compression format and a first operation of the storagesystem; decompressing, by the storage system, based on the firstcompression format, and in response to the identified incompatibility,the received records; compressing, by the storage system and in a secondcompression format, the decompressed records; and storing, by thestorage system, the secondarily compressed records onto the storagemedium.
 17. The computer program product of claim 16, wherein the methodfurther comprises: encrypting, by the storage system and before thestoring, the secondarily compressed records.
 18. The computer programproduct of claim 17, wherein the method further comprises: receiving, bythe storage system, a request for the encrypted secondarily compressedrecords; retrieving, by the storage system, the encrypted secondarilycompressed records from the storage medium; decrypting, by the storagesystem, the encrypted secondarily compressed records; decompressing, bythe storage system and based on the second compression format, thedecrypted secondarily compressed records; and providing, by the storagesystem, the requested records.
 19. The computer program product of claim16, wherein the method further comprises: selecting, by the storagesystem, a subset of the secondarily compressed records; decompressing,by the storage system, the selected subset; and verifying, by thestorage system and based on the decompressed subset and based on thereceived records, the compressing based on the second compressionformat.
 20. The computer program product of claim 19, wherein theverifying is performed before the storing.